void VelvetEQ::ProcessBlock(sample** inputs, sample** outputs, int nFrames)
{
  for (int s = 0; s < nFrames; s++)
  {
    double left = inputs[0][s];
    double right = inputs[1][s];

    for (int i = 0; i < kNumBands; i++) 
    {
      // 1. Basis-Index für dieses Band (4 Parameter pro Band!)
      int baseIdx = i * 4; 

      // 2. EQ Filter immer anwenden (solange Gain nicht 0 oder Typ Notch etc.)
      left = mFiltersL[i].Process(left);
      right = mFiltersR[i].Process(right);

      // 3. NUR Komprimieren, wenn der Comp-Schalter für dieses Band AN ist
      // Der Comp-Parameter liegt auf baseIdx + 3 (0:Freq, 1:Gain, 2:Type, 3:Comp)
      bool compActive = GetParam(baseIdx + 3)->Bool();

      if (compActive)
      {
        double currentGain = GetParam(baseIdx + 1)->Value();
        left = mDynL[i].process(left, currentGain);
        right = mDynR[i].process(right, currentGain);
      }
      else 
      {
        // WICHTIG: Wenn der Comp aus ist, müssen wir sicherstellen,
        // dass die GR-Werte für die Meter auf 0 gesetzt werden!
        mDynL[i].resetGR(); // Falls du so eine Methode hast
        mDynR[i].resetGR();
      }
    }

    outputs[0][s] = (sample)left;
    outputs[1][s] = (sample)right;
  }
}